const axios = require('axios');
require('dotenv').config();

class ChatGLMGenerator {
  constructor() {
    this.baseURL = process.env.CHATGLM_API_URL;
    this.apiKey = process.env.CHATGLM_API_KEY;
  }

  async generateCode(prompt, template) {
    try {
      console.log('Generating code with prompt:', prompt.substring(0, 100));
      
      const response = await axios.post(this.baseURL, {
        model: "chatglm_pro",
        messages: [{
          role: "system",
          content: `你是一个专业的前端开发者，请生成符合以下规范的代码：
          1. 页面布局使用flex
          2. 代码结构必须包含三个部分：template、style、script
          3. template部分只能使用以下组件：
             - <div>: 用于布局
             - <text>: 用于显示文本
             - <input>: 用于输入框
             - <input type="button">: 用于按钮
          4. style部分：
             - 使用.class选择器
             - 单位使用px
             - 不使用scoped
          5. script部分：
             - 使用export default导出
             - 包含data()方法返回数据对象
             - 包含onInit()生命周期方法
             - routeDetail()是方法函数，跟onInit()是并列层级
             - 包含自定义方法
          6. 返回的代码必须包含在\`\`\`html标记中
          7. 参考以下模板格式生成代码：
          
          <template>
            <div class="container">
              <text>示例文本</text>
            </div>
          </template>

          <style>
            .container {
              flex-direction: column;
              justify-content: center;
              align-items: center;
            }
          </style>

          <script>
            export default {
              data() {
                return {
                  title: '示例'
                }
              },
              onInit() {
                console.log('页面初始化')
              },
              handleClick() {
                console.log('点击事件')
              }
            }
          </script>`
        }, {
          role: "user",
          content: `请根据以下模板和要求生成代码：\n${template}\n\n`
        }],
        temperature: 0.5,
        max_tokens: 3000
      }, {
        headers: {
          'Authorization': `Bearer ${this.apiKey}`,
          'Content-Type': 'application/json'
        }
      });

      console.log('AI response received');
      return response.data.choices[0].message.content;
    } catch (error) {
      console.error('AI生成代码失败:', error.response?.data || error.message);
      throw error;
    }
  }
}

module.exports = new ChatGLMGenerator(); 